package faas

import (
	"context"
	"flow-calc/core"
	"flow-calc/core/log"
	"fmt"
)

// JumpFuncHandler 强制跳转到指定的函数流(跳转到第一个函数,然后从第一个函数重新执行)
func JumpFuncHandler(ctx context.Context, flow core.Flow) error {
	log.Logger().InfoCtx(ctx, "---------------> %s <----------------", "JumpFuncHandler ")
	for index, row := range flow.Input() {
		str := fmt.Sprintf("In FuncName = %s, FuncId = %s, row = %s", flow.GetExecFuncConf().FName, flow.GetExecFunction().GetId(), row)
		log.Logger().Info(str)
		// 计算结果数据
		resultStr := fmt.Sprintf("JumpFuncHandler from funcName[%s], index = %d", flow.GetExecFuncConf().FName, index)
		log.Logger().InfoCtx(ctx, resultStr)
		// 提交结果数据
		_ = flow.CommitRow(resultStr)
	}
	// 跳转到funcName1函数
	return flow.Next(core.ActionJumpFunc("第一个函数"))
}
